package br.com.pizzaria.controller;

import java.util.ArrayList;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;

import org.primefaces.context.RequestContext;

import br.com.pizzaria.model.Usuario;;

@SuppressWarnings({"unchecked","rawtypes"})
@ManagedBean(name="beanUsuario")
@SessionScoped
public class UsuarioBean implements IMetodos{
	
		Usuario usuario = null;
		
		public UsuarioBean(){
			usuario = new Usuario(); 
		}
		
		public Usuario getUsuario() {
			return usuario;
		}

		public void setUsuario(Usuario usuario) {
			this.usuario = usuario;
		}
		
		public void login(ActionEvent actionEvent) {  
	        RequestContext context = RequestContext.getCurrentInstance();  
	        FacesMessage msg = null;  
	        boolean loggedIn = false;
	        

	        if(usuario != null  && usuario.getLogin().equals("admin") && usuario.getSenha() != null  && usuario.getSenha().equals("admin")) {  
	            loggedIn = true;  
	            msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Welcome", usuario.getLogin());  
	        } else {  
	            loggedIn = false;  
	            msg = new FacesMessage(FacesMessage.SEVERITY_WARN, "Login Error", "Invalid credentials");  
	        }  
			
	        FacesContext.getCurrentInstance().addMessage(null, msg);  
	        context.addCallbackParam("loggedIn", loggedIn);
	         
	    }  

		@Override
		public boolean inserir() {
			DaoHelper dao = new DaoHelper(usuario);			
			return dao.inserir();
		}

		@Override
		public boolean alterar() {
			DaoHelper dao = new DaoHelper(usuario);			
			return dao.alterar();
		}

		@Override
		public boolean excluir() {
			DaoHelper dao = new DaoHelper(usuario);			
			return dao.excluir();
		}
		
		@Override
		public List<Usuario> getListar() {
				
			DaoHelper dao = new DaoHelper(usuario);
			
			List<Usuario> lista = new ArrayList<Usuario>();
			List<Usuario> listaRetorno = new ArrayList<Usuario>();
			
			lista = dao.getListar();
			
			for (Usuario usu : lista) {
				Usuario nLista = new Usuario();
			   		nLista.setCodigo(usu.getCodigo());
					nLista.setNome(usu.getNome());
					nLista.setLogin(usu.getLogin());
					nLista.setSenha(usu.getSenha());
					nLista.setPergunta(usu.getPergunta());
					nLista.setResposta(usu.getResposta());
					nLista.setAlterar_senha(usu.getAlterar_senha());
					nLista.setNivelacesso(usu.getNivelacesso());
					nLista.setPerc_comissao(usu.getPerc_comissao());
					nLista.setAtivo(usu.isAtivo());
					listaRetorno.add(nLista);
				}
			return listaRetorno;
		}
}
